package com.tss.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.tss.mapper.OptionenMapper;
import com.tss.pojo.Optionen;
import com.tss.pojo.OptionenExample;
import com.tss.pojo.OptionenExample.Criteria;
import com.tss.service.OptionenService;

@Service
public class OptionenServiceImpl implements OptionenService{

	@Autowired
	private OptionenMapper optionenMapper;
	
	@Override
	public boolean addOptionen(Optionen optionen) {
		if(optionen==null||optionen.getQuestionId()==null){
			return false;
		}
		optionen.setValidate(true);
		optionenMapper.insert(optionen);
		
		return true;
	}

	@Override
	public boolean deleteOptionen(Optionen optionen) {
		if(optionen==null){
			return false;
		}
		if(optionen.getQuestionId()!=null){
			List<Optionen> list = listOptionen(optionen.getQuestionId());
			if(list==null||list.isEmpty()){
				return false;
			}
			for(Optionen o : list){
				o.setValidate(false);
				optionenMapper.updateByPrimaryKey(o);
			}
		}
		return updateOptionen(optionen);
	}

	@Override
	public boolean updateOptionen(Optionen optionen) {
		Optionen o = findOptionen(optionen);
		if(o==null){
			return false;
		}
		o.setContent(optionen.getContent());
		optionenMapper.updateByPrimaryKey(o);
		return true;
	}
	
	@Override
	public Optionen findOptionen(Optionen optionen){
		if(optionen==null){
			return null;
		}
		if(optionen.getId()!=null){
			Optionen o = optionenMapper.selectByPrimaryKey(optionen.getId());
			if(o!=null&&o.getValidate()==true){
				return o;
			}else{
				return null;
			}
			
		}
		if(optionen.getQuestionId()!=null&&optionen.getSigns()!=null){
			OptionenExample example = new OptionenExample();
			Criteria criteria = example.createCriteria();
			criteria.andValidateEqualTo(true);
			criteria.andQuestionIdEqualTo(optionen.getQuestionId());
			criteria.andSignsEqualTo(optionen.getSigns());
			List<Optionen> list = optionenMapper.selectByExample(example);
			if(list==null||list.isEmpty()){
				return null;
			}
			return list.get(0);
		}
		return null;
	}

	@Override
	public List<Optionen> listOptionen(Long questionId) {
		if(questionId==null){
			return null;
		}
		OptionenExample example = new OptionenExample();
		Criteria criteria = example.createCriteria();
		criteria.andQuestionIdEqualTo(questionId);
		criteria.andValidateEqualTo(true);
		return optionenMapper.selectByExample(example);
	}

	
}
